// dbMigrationTest.ts
import { MigrationTool } from '../utils/migrationTool'
import { getAllFunds, getAllStocks } from '../data/InvestmentDB'

/**
 * 数据库迁移测试脚本
 * 用于验证数据从旧数据库迁移到新数据库的过程
 */
class DBMigrationTest {
  private static instance: DBMigrationTest

  private constructor() {}

  public static getInstance(): DBMigrationTest {
    if (!DBMigrationTest.instance) {
      DBMigrationTest.instance = new DBMigrationTest()
    }
    return DBMigrationTest.instance
  }

  /**
   * 运行完整测试
   */
  public async runFullTest(): Promise<void> {
    try {
      console.log('========== 开始数据库迁移测试 ==========')

      // 步骤1: 执行数据迁移
      console.log('步骤1: 执行数据迁移...')
      await MigrationTool.migrateData()

      // 步骤2: 验证迁移后的数据
      console.log('步骤2: 验证迁移后的数据...')
      await this.verifyData()

      // 步骤3: 创建数据备份
      console.log('步骤3: 创建数据备份...')
      await MigrationTool.backupData()

      console.log('========== 数据库迁移测试成功 ==========')
    } catch (error) {
      console.error('========== 数据库迁移测试失败 ==========')
      console.error('错误详情:', error)
    }
  }

  /**
   * 验证迁移后的数据
   */
  private async verifyData(): Promise<void> {
    try {
      // 获取基金数据
      const funds = await getAllFunds()
      console.log(`验证结果: 共迁移 ${funds.length} 条基金数据`)

      // 获取股票数据
      const stocks = await getAllStocks()
      console.log(`验证结果: 共迁移 ${stocks.length} 条股票数据`)

      // 打印部分数据样本
      if (funds.length > 0) {
        console.log('基金数据样本:', funds[0])
      }
      if (stocks.length > 0) {
        console.log('股票数据样本:', stocks[0])
      }
    } catch (error) {
      console.error('验证数据失败:', error)
      throw error
    }
  }
}

// 运行测试
if (typeof window !== 'undefined') {
  // 浏览器环境
  document.addEventListener('DOMContentLoaded', async () => {
    const test = DBMigrationTest.getInstance()
    await test.runFullTest()
  })
} else {
  // Node.js环境
  (async () => {
    const test = DBMigrationTest.getInstance()
    await test.runFullTest()
  })()
}